{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 共享单车数量预测案例——线性回归分析\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1、导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np  # 矩阵操作\n",
    "import pandas as pd # SQL数据处理\n",
    "\n",
    "from sklearn.metrics import r2_score  #评价回归预测模型的性能\n",
    "\n",
    "import matplotlib.pyplot as plt   #画图\n",
    "import seaborn as sns\n",
    "\n",
    "# 图形出现在Notebook里而不是新窗口\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2、数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "#dpath = './data/'\n",
    "data = pd.read_csv(\"day3.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   season  yr  mnth  holiday  weekday  workingday  weathersit      temp  \\\n",
       "0       1   0     1        0        6           0           2  0.344167   \n",
       "1       1   0     1        0        0           0           2  0.363478   \n",
       "2       1   0     1        0        1           1           1  0.196364   \n",
       "3       1   0     1        0        2           1           1  0.200000   \n",
       "4       1   0     1        0        3           1           1  0.226957   \n",
       "\n",
       "      atemp       hum  windspeed   cnt  \n",
       "0  0.363625  0.805833   0.160446   985  \n",
       "1  0.353739  0.696087   0.248539   801  \n",
       "2  0.189405  0.437273   0.248309  1349  \n",
       "3  0.212122  0.590435   0.160296  1562  \n",
       "4  0.229270  0.436957   0.186900  1600  "
      ]
     },
     "execution_count": 270,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data =data[data.yr==0]\n",
    "\n",
    "#通过观察前5行，了解数据每列（特征）的概况\n",
    "train_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.370000</td>\n",
       "      <td>0.375621</td>\n",
       "      <td>0.692500</td>\n",
       "      <td>0.192167</td>\n",
       "      <td>2294</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>366</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.273043</td>\n",
       "      <td>0.252304</td>\n",
       "      <td>0.381304</td>\n",
       "      <td>0.329665</td>\n",
       "      <td>1951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>367</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.150000</td>\n",
       "      <td>0.126275</td>\n",
       "      <td>0.441250</td>\n",
       "      <td>0.365671</td>\n",
       "      <td>2236</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>368</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0.107500</td>\n",
       "      <td>0.119337</td>\n",
       "      <td>0.414583</td>\n",
       "      <td>0.184700</td>\n",
       "      <td>2368</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>369</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.265833</td>\n",
       "      <td>0.278412</td>\n",
       "      <td>0.524167</td>\n",
       "      <td>0.129987</td>\n",
       "      <td>3272</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     season  yr  mnth  holiday  weekday  workingday  weathersit      temp  \\\n",
       "365       1   1     1        0        0           0           1  0.370000   \n",
       "366       1   1     1        1        1           0           1  0.273043   \n",
       "367       1   1     1        0        2           1           1  0.150000   \n",
       "368       1   1     1        0        3           1           2  0.107500   \n",
       "369       1   1     1        0        4           1           1  0.265833   \n",
       "\n",
       "        atemp       hum  windspeed   cnt  \n",
       "365  0.375621  0.692500   0.192167  2294  \n",
       "366  0.252304  0.381304   0.329665  1951  \n",
       "367  0.126275  0.441250   0.365671  2236  \n",
       "368  0.119337  0.414583   0.184700  2368  \n",
       "369  0.278412  0.524167   0.129987  3272  "
      ]
     },
     "execution_count": 271,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data = data[data.yr==1]\n",
    "test_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  2.2 数据基本信息\n",
    "样本数目、特征维数\n",
    "每个特征的类型、空值样本的数目、数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(365, 12)"
      ]
     },
     "execution_count": 272,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.0</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.498630</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.526027</td>\n",
       "      <td>0.027397</td>\n",
       "      <td>3.008219</td>\n",
       "      <td>0.684932</td>\n",
       "      <td>1.421918</td>\n",
       "      <td>0.486665</td>\n",
       "      <td>0.466835</td>\n",
       "      <td>0.643665</td>\n",
       "      <td>0.191403</td>\n",
       "      <td>3405.761644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.110946</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.452584</td>\n",
       "      <td>0.163462</td>\n",
       "      <td>2.006155</td>\n",
       "      <td>0.465181</td>\n",
       "      <td>0.571831</td>\n",
       "      <td>0.189596</td>\n",
       "      <td>0.168836</td>\n",
       "      <td>0.148744</td>\n",
       "      <td>0.076890</td>\n",
       "      <td>1378.753666</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>431.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.325000</td>\n",
       "      <td>0.321954</td>\n",
       "      <td>0.538333</td>\n",
       "      <td>0.135583</td>\n",
       "      <td>2132.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.479167</td>\n",
       "      <td>0.472846</td>\n",
       "      <td>0.647500</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>3740.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.656667</td>\n",
       "      <td>0.612379</td>\n",
       "      <td>0.742083</td>\n",
       "      <td>0.235075</td>\n",
       "      <td>4586.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.849167</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>6043.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           season     yr        mnth     holiday     weekday  workingday  \\\n",
       "count  365.000000  365.0  365.000000  365.000000  365.000000  365.000000   \n",
       "mean     2.498630    0.0    6.526027    0.027397    3.008219    0.684932   \n",
       "std      1.110946    0.0    3.452584    0.163462    2.006155    0.465181   \n",
       "min      1.000000    0.0    1.000000    0.000000    0.000000    0.000000   \n",
       "25%      2.000000    0.0    4.000000    0.000000    1.000000    0.000000   \n",
       "50%      3.000000    0.0    7.000000    0.000000    3.000000    1.000000   \n",
       "75%      3.000000    0.0   10.000000    0.000000    5.000000    1.000000   \n",
       "max      4.000000    0.0   12.000000    1.000000    6.000000    1.000000   \n",
       "\n",
       "       weathersit        temp       atemp         hum   windspeed          cnt  \n",
       "count  365.000000  365.000000  365.000000  365.000000  365.000000   365.000000  \n",
       "mean     1.421918    0.486665    0.466835    0.643665    0.191403  3405.761644  \n",
       "std      0.571831    0.189596    0.168836    0.148744    0.076890  1378.753666  \n",
       "min      1.000000    0.059130    0.079070    0.000000    0.022392   431.000000  \n",
       "25%      1.000000    0.325000    0.321954    0.538333    0.135583  2132.000000  \n",
       "50%      1.000000    0.479167    0.472846    0.647500    0.186900  3740.000000  \n",
       "75%      2.000000    0.656667    0.612379    0.742083    0.235075  4586.000000  \n",
       "max      3.000000    0.849167    0.840896    0.972500    0.507463  6043.000000  "
      ]
     },
     "execution_count": 273,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(366, 12)"
      ]
     },
     "execution_count": 274,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.0</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "      <td>366.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.494536</td>\n",
       "      <td>1.0</td>\n",
       "      <td>6.513661</td>\n",
       "      <td>0.030055</td>\n",
       "      <td>2.986339</td>\n",
       "      <td>0.683060</td>\n",
       "      <td>1.368852</td>\n",
       "      <td>0.504081</td>\n",
       "      <td>0.481852</td>\n",
       "      <td>0.612166</td>\n",
       "      <td>0.189572</td>\n",
       "      <td>5599.934426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.112185</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.455958</td>\n",
       "      <td>0.170971</td>\n",
       "      <td>2.006108</td>\n",
       "      <td>0.465921</td>\n",
       "      <td>0.516057</td>\n",
       "      <td>0.176112</td>\n",
       "      <td>0.156756</td>\n",
       "      <td>0.134206</td>\n",
       "      <td>0.078194</td>\n",
       "      <td>1788.667868</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.107500</td>\n",
       "      <td>0.101658</td>\n",
       "      <td>0.254167</td>\n",
       "      <td>0.046650</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.347708</td>\n",
       "      <td>0.350685</td>\n",
       "      <td>0.508125</td>\n",
       "      <td>0.133721</td>\n",
       "      <td>4369.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>2.500000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.514167</td>\n",
       "      <td>0.497779</td>\n",
       "      <td>0.611875</td>\n",
       "      <td>0.174750</td>\n",
       "      <td>5927.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>9.750000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.653958</td>\n",
       "      <td>0.607646</td>\n",
       "      <td>0.711146</td>\n",
       "      <td>0.231196</td>\n",
       "      <td>7011.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.804913</td>\n",
       "      <td>0.925000</td>\n",
       "      <td>0.441563</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           season     yr        mnth     holiday     weekday  workingday  \\\n",
       "count  366.000000  366.0  366.000000  366.000000  366.000000  366.000000   \n",
       "mean     2.494536    1.0    6.513661    0.030055    2.986339    0.683060   \n",
       "std      1.112185    0.0    3.455958    0.170971    2.006108    0.465921   \n",
       "min      1.000000    1.0    1.000000    0.000000    0.000000    0.000000   \n",
       "25%      2.000000    1.0    4.000000    0.000000    1.000000    0.000000   \n",
       "50%      2.500000    1.0    7.000000    0.000000    3.000000    1.000000   \n",
       "75%      3.000000    1.0    9.750000    0.000000    5.000000    1.000000   \n",
       "max      4.000000    1.0   12.000000    1.000000    6.000000    1.000000   \n",
       "\n",
       "       weathersit        temp       atemp         hum   windspeed          cnt  \n",
       "count  366.000000  366.000000  366.000000  366.000000  366.000000   366.000000  \n",
       "mean     1.368852    0.504081    0.481852    0.612166    0.189572  5599.934426  \n",
       "std      0.516057    0.176112    0.156756    0.134206    0.078194  1788.667868  \n",
       "min      1.000000    0.107500    0.101658    0.254167    0.046650    22.000000  \n",
       "25%      1.000000    0.347708    0.350685    0.508125    0.133721  4369.000000  \n",
       "50%      1.000000    0.514167    0.497779    0.611875    0.174750  5927.000000  \n",
       "75%      2.000000    0.653958    0.607646    0.711146    0.231196  7011.250000  \n",
       "max      3.000000    0.861667    0.804913    0.925000    0.441563  8714.000000  "
      ]
     },
     "execution_count": 275,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "metadata": {},
   "outputs": [],
   "source": [
    "#get the names of all the columns\n",
    "cols=train_data.columns\n",
    "\n",
    "#calculates pearson co-efficient for all combinations\n",
    "data_corr=data.corr().abs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(12, 12)"
      ]
     },
     "execution_count": 277,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_corr.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xb6be390>"
      ]
     },
     "execution_count": 278,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xdbf03c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots(figsize=(13,9))\n",
    "sns.heatmap(data_corr,annot=True)\n",
    "\n",
    "#Mask unimportant features\n",
    "sns.heatmap(data_corr,mask=data_corr<1,cbar=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4 数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "w=test_data.cnt.mean()-train_data.cnt.mean()\n",
    "\n",
    "# 从原始数据中分离输入特征x和输出y\n",
    "# drop函数默认删除行，列需要加axis = 1\n",
    "y_train = train_data['cnt'].values\n",
    "X_train0 = train_data.drop(['mnth','cnt','atemp'], axis = 1)\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X_train0.columns\n",
    "\n",
    "#拆分X_train0，将其中的数值型特征归一化后再合并\n",
    "X_train1 = X_train0.drop(['temp','hum','windspeed'], axis = 1)\n",
    "continuity_fields=['temp','hum','windspeed']\n",
    "continuous_X_train = X_train0.loc[:,continuity_fields]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数值型数据归一化\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "\n",
    "# 构造器默认归一到0-1之间\n",
    "min_max_scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "\n",
    "# 对训练数据的特征进行归一化处理并合并\n",
    "continuousData_X_train_minmax = min_max_scaler.fit_transform(continuous_X_train)\n",
    "X_train=np.concatenate([X_train1,continuousData_X_train_minmax],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 281,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test = test_data['cnt'].values\n",
    "X_test0 = test_data.drop(['mnth','cnt','atemp'], axis = 1)\n",
    "\n",
    "#拆分X_test0，将其中的数值型特征归一化后再合并\n",
    "X_test1 = X_test0.drop(['temp','hum','windspeed'], axis = 1)\n",
    "continuous_X_test = X_test0.loc[:,continuity_fields]\n",
    "\n",
    "# 对测试数据的特征进行归一化处理并合并\n",
    "continuousData_X_test_minmax = min_max_scaler.fit_transform(continuous_X_test)\n",
    "X_test=np.concatenate([X_test1,continuousData_X_test_minmax],axis=1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(365, 9)"
      ]
     },
     "execution_count": 282,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(365,)"
      ]
     },
     "execution_count": 283,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(366, 9)"
      ]
     },
     "execution_count": 284,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(366,)"
      ]
     },
     "execution_count": 285,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3、确定模型类型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1 尝试缺省参数的线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef</th>\n",
       "      <th>columns</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3.643557e+03</td>\n",
       "      <td>temp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.701038e+02</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.440009e+01</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.170855e+01</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-4.547474e-13</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-3.012604e+02</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>-5.353632e+02</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-5.441814e+02</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-1.075428e+03</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           coef     columns\n",
       "6  3.643557e+03        temp\n",
       "0  3.701038e+02      season\n",
       "3  2.440009e+01     weekday\n",
       "4  2.170855e+01  workingday\n",
       "1 -4.547474e-13          yr\n",
       "2 -3.012604e+02     holiday\n",
       "7 -5.353632e+02         hum\n",
       "5 -5.441814e+02  weathersit\n",
       "8 -1.075428e+03   windspeed"
      ]
     },
     "execution_count": 287,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 线性回归\n",
    "#class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# 使用默认配置初始化\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 训练模型参数\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "# 预测\n",
    "y_test_pred_lr = lr.predict(X_test)+w\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef\":list((lr.coef_.T))})\n",
    "fs.sort_values(by=['coef'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LinearRegression on test is  0.652647434908366\n",
      "The r2 score of LinearRegression on train is  0.7585129656774425\n"
     ]
    }
   ],
   "source": [
    "# 使用r2_score评价模型在测试集和训练集上的性能，并输出评估结果\n",
    "#测试集\n",
    "print( 'The r2 score of LinearRegression on test is ', r2_score(y_test, y_test_pred_lr))\n",
    "#训练集\n",
    "print( 'The r2 score of LinearRegression on train is ', r2_score(y_train, y_train_pred_lr))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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wtixY3n66ad5z3vew4c//GGgFkR33333uhBZuXIl8+fP54gjjuD888/nS1/6EscddxxHHHHEett74IEHmDRpEu3ttUmmTzrpJP7whz9ssg6ZyUUXXcSsWbPYYostWLRoEUuWLGGXXXZZt85hhx3GWWedxapVqzjxxBMZO7ZvU3kee+yxDB06lKFDhzJy5EiWLFnCjBkzmDNnDocddti6Nhk5ciQAt956K9OnT2f16tUsXryY3//+9+uC6KSTTupTHerhoTlJLWPtOaKFCxfy+uuvrztHlJlceOGFzJ07l7lz57JgwQKmTJnCvvvuy5w5czjooIO48MILufTSjX+z393w5S233JI33nhj3fZff/11AG666SaWLVvGnDlzmDt3LjvvvPNGv8M58sgjmTVrFrvtthunnXYaN9xwQ59e79ChQ9fdHzJkCKtXryYzOeOMM9a91scff5xp06bx1FNPcfnllzNjxgwefvhhjj322PXqtfXWW/epDvUwiCS1nBEjRnDllVdy+eWXs2rVKo4++miuvfbadSPWFi1axNKlS3n22Wd5+9vfzqmnnsr555/PQw89tN523vve9zJz5kyWL1/OqlWr1jt/MmbMGObMmQPAHXfcwapVq4Da4b2RI0fS1tbGvffey8KFG18tYeHChYwcOZJzzjmHKVOmbLTf/pg8eTK33XYbS5cuBeD5559n4cKFrFixgq233poRI0awZMkS7rrrrh621DgempNUROkBFOPGjeOQQw7h5ptv5rTTTmPevHlMnDgRqA0suPHGG1mwYAFf/OIX2WKLLWhra+Pqq69ebxujRo1i2rRpTJw4kVGjRnHooYeuO/F/zjnncMIJJzB+/HgmT568rkfxqU99io997GN0dHQwduxY3v3ud29Ut5kzZ3LZZZfR1tbG8OHDu+0RHXvssevmeJs4cSKf+cxnenzd+++/P1/96lc56qijeOONN2hra+Oqq65iwoQJjBs3jgMOOIC99tqLww8/vP7G7KdezTXXX841Jw2cnr7YS3/xz5s3j/32269sJTQgunpvB2yuOUmSGs0gkiQVZRBJGjSDeSpAg6MR76lBJGlQDBs2jOXLlxtGTWTt9YiGDRvWr+04ak7SoNh999155plnWLZsWemqqIHWXqG1PwwiSYOira1to6t4SuChOUlSYfaIJK1Tz2+NSv8eSc3HHpEk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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xe83aa90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#在训练集上观察预测残差的分布，看是否符合模型假设：噪声为0均值的高斯噪声\n",
    "f, ax = plt.subplots(figsize=(6, 4)) \n",
    "f.tight_layout() \n",
    "\n",
    "ax.hist(y_train - y_train_pred_lr,bins=40, label='Residuals Linear', color='b', alpha=.5); \n",
    "ax.set_title(\"Histogram of Residuals\") \n",
    "ax.legend(loc='best');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xca0dcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#还可以观察预测值与真值的散点图\n",
    "plt.figure(figsize=(4, 3))\n",
    "plt.scatter(y_train, y_train_pred_lr)\n",
    "#plt.plot([-3, 3], [-3, 3], '--k')   #数据已经标准化，3倍标准差即可\n",
    "plt.axis('tight')\n",
    "plt.xlabel('True cnt')\n",
    "plt.ylabel('Predicted cnt')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 正则化的线性回归（L2正则 --> 岭回归）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of RidgeCV on test is 0.6518880549322723\n",
      "The r2 score of RidgeCV on train is 0.7584977031302007\n"
     ]
    }
   ],
   "source": [
    "#岭回归／L2正则\n",
    "#class sklearn.linear_model.RidgeCV(alphas=(0.1, 1.0, 10.0), fit_intercept=True, \n",
    "#                                  normalize=False, scoring=None, cv=None, gcv_mode=None, \n",
    "#                                  store_cv_values=False)\n",
    "from sklearn.linear_model import  RidgeCV\n",
    "\n",
    "#设置超参数（正则参数）范围\n",
    "alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "#n_alphas = 20\n",
    "#alphas = np.logspace(-5,2,n_alphas)\n",
    "\n",
    "#生成一个RidgeCV实例\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True)  \n",
    "\n",
    "#模型训练\n",
    "ridge.fit(X_train, y_train)    \n",
    "\n",
    "#预测\n",
    "\n",
    "y_test_pred_ridge = ridge.predict(X_test)+w\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print ('The r2 score of RidgeCV on test is', r2_score(y_test, y_test_pred_ridge))\n",
    "print( 'The r2 score of RidgeCV on train is', r2_score(y_train, y_train_pred_ridge))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAEKCAYAAAC7c+rvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl8VdW99/HPjxmZwhBQSRBUlOLAFBCn1jqi7S1atWqtRhyo1trBp7el16fltj4drB1ubdXWCoKtYx0qba0Up9o+VSGMERGJWEkEIQoJ85Dkd/84K/QYMpxAzllJzvf9euWVc9Ze+6zf2eL5Zu+z9t7m7oiIiMTQIXYBIiKSvRRCIiISjUJIRESiUQiJiEg0CiEREYlGISQiItEohEREJBqFkIiIRKMQEhGRaDrFLqC1GzBggA8dOjR2GSIibcrChQvfd/fcpvophJowdOhQioqKYpchItKmmNk7qfTT4TgREYlGISQiItEohEREJBqFkIiIRKMQEhGRaBRCIiISTdpCyMxmmtkGM3stqa2fmc0zs1Xhd9/QbmZ2h5mVmNkyMxubtE5h6L/KzAqT2seZWXFY5w4zs/0dQ0RE4kjnntAsYFKdtmnAc+4+HHguPAc4FxgefqYCd0MiUIDpwAnABGB6baiEPlOT1pu0P2OIiMiHVdc4/+9Pr/NuxY60j5W2EHL3l4CNdZonA7PD49nA+Unt93vCK0COmR0CnAPMc/eN7r4JmAdMCst6u/vL7u7A/XVeqzljiIhI4O7895zl3PuPt/nbyvK0j5fp74QGufs6gPB7YGgfDJQm9SsLbY21l9XTvj9jiIhIcNeLb/HbV97h8x89nM+eMCTt47WWiQlWT5vvR/v+jLFvR7OpZlZkZkXl5en/S0BEpDV4bGEZt89dyeTRh/KNSSMyMmamQ2h97SGw8HtDaC8D8pP65QFrm2jPq6d9f8bYh7vf4+4F7l6Qm9vk9fdERNq8v71ZzrTHl3Hykf25/aJRdOhQ39/tLS/TITQHqJ3hVgg8ldR+ZZjBNhGoDIfS5gJnm1nfMCHhbGBuWLbFzCaGWXFX1nmt5owhIpLVissqueF3Cxk+qBe/+tw4unTKXDSk7SraZvYQcBowwMzKSMxy+yHwqJldA6wBLg7dnwbOA0qA7cAUAHffaGa3AgtCv++6e+1khxtIzMDrDvwl/NDcMUREstmaD7YzZdZ8+h7UhVlTxtOrW+eMjm+JyWXSkIKCAtetHESkPdq4bTcX3v1PNm7bzeM3nMiRA3u12Gub2UJ3L2iqX2uZmCAiIhm0Y3c1V89awNqKHcwoLGjRAGoO3dRORCTLVFXXcNNDi1haVsHdl4+jYGi/aLVoT0hEJIu4O9966jWeXbGB73zqGCYde3DUehRCIiJZ5BfPl/DQ/FK+cNoRXHni0NjlKIRERLLFowtK+em8N/n02MH85zlHxy4HUAiJiGSFF97YwDefLObU4QO47cLjCTceiE4hJCLSzi0treALDyxixMG9uPtz4+jcsfV89LeeSkREpMX96/1tXD1rAf17duG+KePp2bV1TYpWCImItFPvb91F4X3zqXFn9tUTGNirW+yS9tG6IlFERFrEtl1VXD1rAes37+TB6yZyRG7P2CXVS3tCIiLtzJ7qGm58cBGvvVvJLy4by9ghfZteKRLtCYmItCPuzi1PFvPiynK+f8FxnDVyUOySGqU9IRGRduRnz67i0aIyvnTG8IzcGfVAKYRERNqJB19dwx3PreIzBXl89czhsctJiUJIRKQdmPf6ev7vH4r5+NG5fO+C41rNyahNUQiJiLRxC9/ZxE0PLeK4wX248/Kxrepk1Ka0nUpFRGQfb5Vv5drZCxjUuxszrhrPQV3a1nwzhZCISBu1YctOCmfOp4MZs6dMYEDPrrFLara2FZkiIgLA1l1VTLlvAR9s3c3DUycydECP2CXtF4WQiEgbs7uqhht+t5A33tvCvVcWMCo/J3ZJ+02H40RE2hB3Z9rjy/j7qvf5wQXH8fERA2OXdEAUQiIibcjtc1fyxOJ3ufmso/jM+PzY5RwwhZCISBtx/8v/4q4X3+KyCUO46fQjY5fTIhRCIiJtwDOvvcf0Ocs58yMDuXXyMW3mZNSmKIRERFq5Bf/ayJceXsyovBx+cdlYOrWhk1Gb0n7eiYhIO1SyYQvXzi5icE53Zl41nu5dOsYuqUUphEREWqn1m3dSOHMBnTt2YPaUCfTr0SV2SS1OISQi0gpt3rmHwpnzqdi+m1lTxjOk/0GxS0oLnawqItLK7K6q4frfLqRkw1ZmXjWeYwf3iV1S2iiERERakZoa5z8fW8o/3/qAn1w8io8elRu7pLSKcjjOzL5qZsvN7DUze8jMupnZMDN71cxWmdkjZtYl9O0anpeE5UOTXueboX2lmZ2T1D4ptJWY2bSk9nrHEBFpLW575g2eWrKWr086mgvH5cUuJ+0yHkJmNhj4ElDg7scCHYFLgduAn7n7cGATcE1Y5Rpgk7sfCfws9MPMRob1jgEmAXeZWUcz6wjcCZwLjAQuC31pZAwRkehm/uNtfv3Saq488TBu+NgRscvJiFgTEzoB3c2sE3AQsA44HXgsLJ8NnB8eTw7PCcvPsMRZWpOBh919l7u/DZQAE8JPibuvdvfdwMPA5LBOQ2OIiET152XruPXPr3POMYOY/h/t52TUpmQ8hNz9XeDHwBoS4VMJLAQq3L0qdCsDBofHg4HSsG5V6N8/ub3OOg21929kDBGRaF5Z/QFffWQJ44b05eeXjqFjh+wIIIhzOK4vib2YYcChQA8Sh87q8tpVGljWUu311TjVzIrMrKi8vLy+LiIiLWLle1u47v4i8vt1597CArp1bl8nozYlxuG4M4G33b3c3fcATwAnATnh8BxAHrA2PC4D8gHC8j7AxuT2Ous01P5+I2N8iLvf4+4F7l6Qm9u+Z6aISDzrKndw1X3z6d65I7OvnkDOQdk3VypGCK0BJprZQeF7mjOA14EXgItCn0LgqfB4TnhOWP68u3tovzTMnhsGDAfmAwuA4WEmXBcSkxfmhHUaGkNEJKMqd+zhqpkL2LKzillTJpDXt32ejNqUGN8JvUpicsAioDjUcA/wDeBmMysh8f3NjLDKDKB/aL8ZmBZeZznwKIkAewa40d2rw3c+XwTmAiuAR0NfGhlDRCRjdlVVM/X+Ila/v5VfXzGOkYf2jl1SNJbYQZCGFBQUeFFRUewyRKSdqKlxbnp4MX9eto6fXzqayaPb5/woM1vo7gVN9dO140REMuh7T6/gz8vW8V/njWi3AdQcCiERkQz5zUurmfGPt5ly8lCuO/Xw2OW0CgohEZEMeGrJu3zv6RV84rhD+NYnRmbNyahNUQiJiKTZP0ve52u/X8qEYf34yWdG0SGLTkZtikJIRCSNXl+7mc//diHDBvTgN1dk38moTVEIiYikSdmm7Vx133x6dO3ErCkT6HNQ59gltTq6n5CISBpUbN/NVfctYMeean5//YkcmtM9dkmtkvaERERa2M491Vw7u4g1H2znnisKGHFw9p6M2hTtCYmItKDqGucrDy+h6J1N/PKzYzjxiP6xS2rVtCckItJC3J3v/HE5zyx/j299ciSfPP7Q2CW1egohEZEW8qu/reb+l9/hulOHcc0pw2KX0yYohEREWsATi8q47Zk3+NSoQ/nmuR+JXU6boRASETlAf19VztcfW8ZJR/Tn9ouP18mozaAQEhE5AK+9W8n1v13IkQN78qsrxtG1k05GbQ6FkIjIfirduJ0psxaQc1AXZl89gd7ddDJqc2mKtojIfti4bTeFM+ezu6qGh647gUG9u8UuqU1SCImINNOO3dVcO3sBZRU7eODaEzhyYK/YJbVZOhwnItIMVdU13PTQYhaXVnDHpaMZP7Rf7JLaNIWQiEiK3J1vz1nOsyvW89//cQyTjj0kdkltnkJIRCRFd75QwoOvruGG046g8KShsctpFxRCIiIp+H1RKT/+65t8esxgvn7O0bHLaTcUQiIiTXhh5QamPVHMqcMH8MMLj9etuVuQQkhEpBHLyiq48YFFjDi4F3d/bhxdOuljsyVpa4qINOCdD7Zx9awF9OvRhfumjKdnV53V0tIUQiIi9fhg6y4KZ86nqsaZffUEBvbSyajpoBASEalj++4qrp5dxLrKncwoHM8RuT1jl9RuKYRERJJUVdfwxQcXU1xWwS8uG8O4w/rGLqld0wFOEZHA3bnlydd4/o0NfO+CYzn7mINjl9TuaU9IRCT4n2dX8UhRKTedfiSXn3BY7HKygkJIRAR4aP4afv7cKi4al8fNZx0Vu5ysESWEzCzHzB4zszfMbIWZnWhm/cxsnpmtCr/7hr5mZneYWYmZLTOzsUmvUxj6rzKzwqT2cWZWHNa5w8KZZQ2NISLZ7bkV67nlyWJOOzqXH3z6OJ2MmkGx9oR+Djzj7iOAUcAKYBrwnLsPB54LzwHOBYaHn6nA3ZAIFGA6cAIwAZieFCp3h761600K7Q2NISJZavGaTdz44CKOHdyHOz87ls4ddYAokzK+tc2sN/BRYAaAu+929wpgMjA7dJsNnB8eTwbu94RXgBwzOwQ4B5jn7hvdfRMwD5gUlvV295fd3YH767xWfWOISBZaXb6Va2YXMah3N2ZeNZ4eOhk142JE/uFAOXCfmS02s3vNrAcwyN3XAYTfA0P/wUBp0vploa2x9rJ62mlkDBHJMuVbdlF433wMmD1lAgN6do1dUlaKEUKdgLHA3e4+BthG44fF6js46/vRnjIzm2pmRWZWVF5e3pxVRaQN2Lqriimz5vP+lt3MuGo8Qwf0iF1S1ooRQmVAmbu/Gp4/RiKU1odDaYTfG5L65yetnwesbaI9r552GhnjQ9z9HncvcPeC3Nzc/XqTItI67amu4QsPLGLFui3cefkYRufnxC4pq2U8hNz9PaDUzGpvyHEG8DowB6id4VYIPBUezwGuDLPkJgKV4VDaXOBsM+sbJiScDcwNy7aY2cQwK+7KOq9V3xgikgXcnWmPF/PSm+V8/4JjOX3EoNglZb1Y38LdBDxgZl2A1cAUEoH4qJldA6wBLg59nwbOA0qA7aEv7r7RzG4FFoR+33X3jeHxDcAsoDvwl/AD8MMGxhCRLPCTv77J44vK+OqZR3HJ+CGxyxHAEhPIpCEFBQVeVFQUuwwROUC/feUdvvWH17hsQj7fv0DnAqWbmS1094Km+mk+ooi0Ozv3VLN8bSWL11SwuLSCJWsqeLdiB2eMGMitk49VALUiCiERadPcnXc+2M7i0k0sCaGzYt1m9lQnjvIMzunO6CE5XHvqMC4dP4ROOhm1VVEIiUibUrljD0tLK1hSWsHiNZtYUlrBpu17ADioS0eOz+vDtacezpj8HEYPydHN6Fo5hZCItFpV1TWsXL+FxWv+HTpvlW8DwAyGD+zJWSMHMWZIX0bn53DUoF507KBDbW2JQkhEWo31m3eyeM0mFpdWsHhNBcVllezYUw1A/x5dGJ2fwwVjBjNmSF+Oy+tD726dI1csB0ohJCJR7NxTTfG7leF7nE0sXlPBusqdAHTuaBxzaB8uGZ/PmCE5jMnvS36/7ppQ0A6lHEJmdgow3N3vM7NcoKe7v52+0kSkvXB33n5/WziklgidN9ZtoaomMXkgv193Cob22/s9zshDetOtc8fIVUsmpBRCZjYdKACOBu4DOgO/A05OX2ki0lZVbN/Nkr2TBypYWlZBRZg80LNrJ0bl9+HzHzucMfl9GZWfQ24vXTw0W6W6J3QBMAZYBODua82sV9qqEpE2Y091DSvf2xK+x0lMk179/r8nDxw9qBeTjjmYMUNyGJ3flyMH9tTkAdkr1RDa7e5uZg4Qbr0gIlloXeWOvefjLF6zieJ3K9m5pwaAAT27Mjo/hwvH5TFmSA7H5+XQU/fokUak+q/jUTP7NYkbyl0HXA38Jn1liUhrsH13FcVllXsPqy0preC9zYnJA106duDYwb357ITDwl5ODnl9NXlAmielEHL3H5vZWcBmEt8Lfdvd56W1MhHJqJoaZ/XeyQOJk0DfeG8L1WHywGH9D+KEw2snD/TlI4f0omsnTR6QA5PqxIQewPPuPi/cguFoM+vs7nvSW56IpMumbbtZUhZmq63ZxNLSCjbvrAKgV9dOjB6SwxdOO4IxQ3IYlZdDf915VNIg1cNxLwGnhvv2PAsUAZcAl6erMBFpOXuqa1ixbvOHDqu9HSYPdDA4+uDefOL4Q8M5OTkckduTDpo8IBmQagiZu28P9+H5hbv/yMwWp7MwEdk/7s7ayp2JyQPhsFrxu5XsqkpMHsjt1ZWxQ3L4TEHiRNDjBvehhyYPSCQph5CZnUhiz+eaZq4rImm0bVcVxe9W7j2stqS0gg1bdgHQtVMHjhvchysmHpa4vtqQHA7t002TB6TVSDVIvgxMA55w9+VmNgx4Pn1ltX2L12zi5dUfNNrHaPiDoKnPiKY+Qhpbv7FxUxm7KY19wKXy0rW3Wax7w8Xap47X01Z/n7r3bKx9zbrrNbau1+mQylgN9WGfeusf68OvVf972b67iuJ3N7Pyvc2EuQMMG9CDk48csHe22oiDe9Olk25dIK1XqiG0HagBLjOzz5H4LNEtWRsx/+2N/OiZlbHLkBZWm6+297nVeZ7Ulw93rtundnlDr5nctu9rGJ07dmDkob05a+TwROjk5dC3R5f9e2MikaQaQg8AXwNeIxFG0oRrThlG4UlD92vdpu647k3kf2PrN/WXQ1O3e296/f1f2fF9P7ib+ND/cJ8Pf6g3tbyxD/29fXTYSiStUg2hcnf/Y1oraWc6deyATqEQEWlcqiE03czuBZ4DdtU2uvsTaalKRESyQqohNAUYQeLq2bWH4xxQCImIyH5LNYRGuftxaa1ERESyTqpzN18xs5FprURERLJOqntCpwCFZvY2ie+EDHB3Pz5tlYmISLuXaghNSmsVIiKSlVK9lcM76S5ERESyj67nISIi0SiEREQkGoWQiIhEoxASEZFoooWQmXU0s8Vm9qfwfJiZvWpmq8zsETPrEtq7huclYfnQpNf4ZmhfaWbnJLVPCm0lZjYtqb3eMUREJI6Ye0JfBlYkPb8N+Jm7Dwc28e+b510DbHL3I4GfhX6Ek2cvBY4hMYX8rhBsHYE7gXOBkSRuPzGyiTFERCSCKCFkZnnAJ4B7w3MDTgceC11mA+eHx5PDc8LyM0L/ycDD7r7L3d8GSoAJ4afE3Ve7+27gYWByE2OIiEgEsfaE/gf4Ov++GGp/oMLdq8LzMmBweDwYKAUIyytD/73tddZpqL2xMT7EzKaaWZGZFZWXl+/vexQRkSZkPITM7JPABndfmNxcT1dvYllLte/b6H6Puxe4e0Fubm59XUREpAWketmelnQy8CkzOw/oBvQmsWeUY2adwp5KHrA29C8D8oEyM+sE9AE2JrXXSl6nvvb3GxlDREQiyPiekLt/093z3H0oiYkFz7v75cALwEWhWyHwVHg8JzwnLH/eE/egngNcGmbPDQOGA/OBBcDwMBOuSxhjTlinoTFERCSC1nSe0DeAm82shMT3NzNC+wygf2i/GZgG4O7LgUeB14FngBvdvTrs5XwRmEti9t2joW9jY4iISASW2EGQhhQUFHhRUVHsMkRE2hQzW+juBU31a017QiIikmUUQiIiEo1CSEREolEIiYhINAohERGJRiEkIiLRKIRERCQahZCIiESjEBIRkWgUQiIiEo1CSEREolEIiYhINAohERGJRiEkIiLRKIRERCQahZCIiESjEBIRkWgUQiIiEo1CSEREolEIiYhINAohERGJRiEkIiLRKIRERCQahZCIiESjEBIRkWgUQiIiEo1CSEREolEIiYhINAohERGJRiEkIiLRZDyEzCzfzF4wsxVmttzMvhza+5nZPDNbFX73De1mZneYWYmZLTOzsUmvVRj6rzKzwqT2cWZWHNa5w8yssTFERCSOGHtCVcD/cfePABOBG81sJDANeM7dhwPPhecA5wLDw89U4G5IBAowHTgBmABMTwqVu0Pf2vUmhfaGxhARkQgyHkLuvs7dF4XHW4AVwGBgMjA7dJsNnB8eTwbu94RXgBwzOwQ4B5jn7hvdfRMwD5gUlvV295fd3YH767xWfWOIiEgEUb8TMrOhwBjgVWCQu6+DRFABA0O3wUBp0mploa2x9rJ62mlkDBERiSBaCJlZT+Bx4CvuvrmxrvW0+X60N6e2qWZWZGZF5eXlzVlVRESaIUoImVlnEgH0gLs/EZrXh0NphN8bQnsZkJ+0eh6wton2vHraGxvjQ9z9HncvcPeC3Nzc/XuTIiLSpBiz4wyYAaxw958mLZoD1M5wKwSeSmq/MsySmwhUhkNpc4GzzaxvmJBwNjA3LNtiZhPDWFfWea36xhARkQg6RRjzZOAKoNjMloS2/wJ+CDxqZtcAa4CLw7KngfOAEmA7MAXA3Tea2a3AgtDvu+6+MTy+AZgFdAf+En5oZAwREYnAEhPIpCEFBQVeVFQUuwwRkTbFzBa6e0FT/XTFBBERiUYhJCIi0SiEREQkGoWQiIhEoxASEZFoFEIiIhKNQkhERKJRCImISDQKIRERiUYhJCIi0SiEREQkGoWQiIhEoxASEZFoFEIiIhKNQkhERKJRCImISDQKIRERiUYhJCIi0SiEREQkGoWQiIhEoxASEZFoFEIiIhKNQkhERKJRCImISDQKIRERiUYhJCIi0SiEREQkGoWQiIhEoxASEZFoFEIiIhJN1oWQmU0ys5VmVmJm02LXIyKSzbIqhMysI3AncC4wErjMzEbGrUpEJHtlVQgBE4ASd1/t7ruBh4HJkWsSEcla2RZCg4HSpOdloU1ERCLIthCyetp8n05mU82syMyKysvLM1CWiEh2yrYQKgPyk57nAWvrdnL3e9y9wN0LcnNzM1aciEi2ybYQWgAMN7NhZtYFuBSYE7kmEZGs1Sl2AZnk7lVm9kVgLtARmOnuyyOXJSKStbIqhADc/Wng6dh1iIhI9h2OExGRVkQhJCIi0SiEREQkGoWQiIhEoxASEZFozH2fCwZIEjMrB97Zz9UHAO+3YDktRXU1j+pqvtZam+pqngOp6zB3b/Jsf4VQGplZkbsXxK6jLtXVPKqr+VprbaqreTJRlw7HiYhINAohERGJRiGUXvfELqABqqt5VFfztdbaVFfzpL0ufSckIiLRaE9IRESiUQi1IDO73czeMLNlZvakmeU00G+Sma00sxIzm5aBui42s+VmVmNmDc50MbN/mVmxmS0xs6JWVFemt1c/M5tnZqvC774N9KsO22qJmaXtliBNvX8z62pmj4Tlr5rZ0HTV0sy6rjKz8qRtdG2G6pppZhvM7LUGlpuZ3RHqXmZmY1tJXaeZWWXS9vp2BmrKN7MXzGxF+H/xy/X0Se/2cnf9tNAPcDbQKTy+Dbitnj4dgbeAw4EuwFJgZJrr+ghwNPAiUNBIv38BAzK4vZqsK9L2+hEwLTyeVt9/x7Bsawa2UZPvH/gC8Kvw+FLgkVZS11XALzP17ylp3I8CY4HXGlh+HvAXEndangi82krqOg34U4a31SHA2PC4F/BmPf8d07q9tCfUgtz9r+5eFZ6+QuLOrXVNAErcfbW77wYeBianua4V7r4ynWPsjxTryvj2Cq8/OzyeDZyf5vEak8r7T673MeAMM6vvVvaZrisKd38J2NhIl8nA/Z7wCpBjZoe0groyzt3Xufui8HgLsAIYXKdbWreXQih9ribx10Ndg4HSpOdl7PsfPRYH/mpmC81sauxighjba5C7r4PE/6TAwAb6dTOzIjN7xczSFVSpvP+9fcIfQZVA/zTV05y6AC4Mh3AeM7P8NNeUqtb8/+CJZrbUzP5iZsdkcuBwGHcM8GqdRWndXll3U7sDZWbPAgfXs+gWd38q9LkFqAIeqO8l6mk74CmKqdSVgpPdfa2ZDQTmmdkb4a+3mHVlfHs142WGhO11OPC8mRW7+1sHWlsdqbz/tGyjJqQy5h+Bh9x9l5ldT2Jv7fQ015WKGNsrFYtIXOpmq5mdB/wBGJ6Jgc2sJ/A48BV331x3cT2rtNj2Ugg1k7uf2dhyMysEPgmc4eGAah1lQPJfhHnA2nTXleJrrA2/N5jZkyQOuRxQCLVAXRnfXma23swOcfd14bDDhgZeo3Z7rTazF0n8FdnSIZTK+6/tU2ZmnYA+pP+wT5N1ufsHSU9/Q+J70tYgLf+mDlTyh7+7P21md5nZAHdP6zXlzKwziQB6wN2fqKdLWreXDse1IDObBHwD+JS7b2+g2wJguJkNM7MuJL5ITtvMqlSZWQ8z61X7mMQki3pn8WRYjO01BygMjwuBffbYzKyvmXUNjwcAJwOvp6GWVN5/cr0XAc838AdQRuuq873Bp0h839AazAGuDLO+JgKVtYdfYzKzg2u/yzOzCSQ+nz9ofK0DHtOAGcAKd/9pA93Su70yOROjvf8AJSSOnS4JP7Uzlg4Fnk7qdx6JWShvkTgsle66LiDx18wuYD0wt25dJGY5LQ0/y1tLXZG2V3/gOWBV+N0vtBcA94bHJwHFYXsVA9eksZ593j/wXRJ/7AB0A34f/v3NBw5P9zZKsa4fhH9LS4EXgBEZqushYB2wJ/z7uga4Hrg+LDfgzlB3MY3MGM1wXV9M2l6vACdloKZTSBxaW5b0uXVeJreXrpggIiLR6HCciIhEoxASEZFoFEIiIhKNQkhERKJRCImISDQKIZE0MbOtB7j+Y+FqDI31edEauQJ5qn3q9M81s2dS7S9yIBRCIq1QuG5YR3dfnemx3b0cWGdmJ2d6bMk+CiGRNAtnmt9uZq9Z4n5Nl4T2DuHSLMvN7E9m9rSZXRRWu5ykKzWY2d3hYqnLzew7DYyz1cx+YmaLzOw5M8tNWnyxmc03szfN7NTQf6iZ/T30X2RmJyX1/0OoQSStFEIi6fdpYDQwCjgTuD1c0ubTwFDgOOBa4MSkdU4GFiY9v8XdC4DjgY+Z2fH1jNMDWOTuY4G/AdOTlnVy9wnAV5LaNwBnhf6XAHck9S8CTm3+WxVpHl3AVCT9TiFxNelqYL2Z/Q0YH9p/7+41wHtm9kLSOocA5UlpMtO/AAABkUlEQVTPPxNur9EpLBtJ4lIryWqAR8Lj3wHJF6OsfbyQRPABdAZ+aWajgWrgqKT+G0hcPkkkrRRCIunX0A3mGrvx3A4S14TDzIYBXwPGu/smM5tVu6wJydfk2hV+V/Pv/++/SuKafaNIHBXZmdS/W6hBJK10OE4k/V4CLjGzjuF7mo+SuNDoP0jc9K2DmQ0icXvnWiuAI8Pj3sA2oDL0O7eBcTqQuIo2wGfD6zemD7Au7IldQeKW3bWOonVcRV3aOe0JiaTfkyS+71lKYu/k6+7+npk9DpxB4sP+TRJ3tKwM6/yZRCg96+5LzWwxiSssrwb+fwPjbAOOMbOF4XUuaaKuu4DHzexiEle53pa07OOhBpG00lW0RSIys56euJNmfxJ7RyeHgOpOIhhODt8lpfJaW929ZwvV9RIw2d03tcTriTREe0Iicf3JzHKALsCt7v4egLvvMLPpwGBgTSYLCocMf6oAkkzQnpCIiESjiQkiIhKNQkhERKJRCImISDQKIRERiUYhJCIi0SiEREQkmv8FiG0GCROmOAsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xdab7080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 0.1\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>columns</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3.643557e+03</td>\n",
       "      <td>3621.788861</td>\n",
       "      <td>temp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.701038e+02</td>\n",
       "      <td>371.693625</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.440009e+01</td>\n",
       "      <td>24.410819</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.170855e+01</td>\n",
       "      <td>22.780540</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-4.547474e-13</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-3.012604e+02</td>\n",
       "      <td>-297.544593</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>-5.353632e+02</td>\n",
       "      <td>-513.873544</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-5.441814e+02</td>\n",
       "      <td>-548.600490</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-1.075428e+03</td>\n",
       "      <td>-1058.746395</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        coef_lr   coef_ridge     columns\n",
       "6  3.643557e+03  3621.788861        temp\n",
       "0  3.701038e+02   371.693625      season\n",
       "3  2.440009e+01    24.410819     weekday\n",
       "4  2.170855e+01    22.780540  workingday\n",
       "1 -4.547474e-13     0.000000          yr\n",
       "2 -3.012604e+02  -297.544593     holiday\n",
       "7 -5.353632e+02  -513.873544         hum\n",
       "5 -5.441814e+02  -548.600490  weathersit\n",
       "8 -1.075428e+03 -1058.746395   windspeed"
      ]
     },
     "execution_count": 292,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1)) \n",
    "\n",
    "#这是为了标出最佳参数的位置，不是必须\n",
    "plt.plot(np.log10(ridge.alpha_)*np.ones(3), [0.28, 0.29, 0.30])\n",
    "\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()\n",
    "\n",
    "print ('alpha is:', ridge.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 正则化的线性回归（L1正则 --> Lasso）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LassoCV on test is 0.6341301423869947\n",
      "The r2 score of LassoCV on train is 0.7544022151877708\n"
     ]
    }
   ],
   "source": [
    "#### Lasso／L1正则\n",
    "# class sklearn.linear_model.LassoCV(eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, \n",
    "#                                    normalize=False, precompute=’auto’, max_iter=1000, \n",
    "#                                    tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=1,\n",
    "#                                    positive=False, random_state=None, selection=’cyclic’)\n",
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#设置超参数搜索范围\n",
    "#alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "#lasso = LassoCV(alphas=alphas)  \n",
    "lasso = LassoCV()  \n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)+w\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print ('The r2 score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print ('The r2 score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 294,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xdabc630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 6.7129494412929684\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coef_lasso</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>columns</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>3486.201020</td>\n",
       "      <td>3.643557e+03</td>\n",
       "      <td>3621.788861</td>\n",
       "      <td>temp</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>373.920643</td>\n",
       "      <td>3.701038e+02</td>\n",
       "      <td>371.693625</td>\n",
       "      <td>season</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25.517408</td>\n",
       "      <td>2.440009e+01</td>\n",
       "      <td>24.410819</td>\n",
       "      <td>weekday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20.028222</td>\n",
       "      <td>2.170855e+01</td>\n",
       "      <td>22.780540</td>\n",
       "      <td>workingday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>-4.547474e-13</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>yr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-40.516876</td>\n",
       "      <td>-3.012604e+02</td>\n",
       "      <td>-297.544593</td>\n",
       "      <td>holiday</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>-0.000000</td>\n",
       "      <td>-5.353632e+02</td>\n",
       "      <td>-513.873544</td>\n",
       "      <td>hum</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-624.500816</td>\n",
       "      <td>-5.441814e+02</td>\n",
       "      <td>-548.600490</td>\n",
       "      <td>weathersit</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-686.146543</td>\n",
       "      <td>-1.075428e+03</td>\n",
       "      <td>-1058.746395</td>\n",
       "      <td>windspeed</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    coef_lasso       coef_lr   coef_ridge     columns\n",
       "6  3486.201020  3.643557e+03  3621.788861        temp\n",
       "0   373.920643  3.701038e+02   371.693625      season\n",
       "3    25.517408  2.440009e+01    24.410819     weekday\n",
       "4    20.028222  2.170855e+01    22.780540  workingday\n",
       "1     0.000000 -4.547474e-13     0.000000          yr\n",
       "2   -40.516876 -3.012604e+02  -297.544593     holiday\n",
       "7    -0.000000 -5.353632e+02  -513.873544         hum\n",
       "5  -624.500816 -5.441814e+02  -548.600490  weathersit\n",
       "8  -686.146543 -1.075428e+03 -1058.746395   windspeed"
      ]
     },
     "execution_count": 294,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses) \n",
    "#plt.plot(np.log10(lasso.alphas_)*np.ones(3), [0.3, 0.4, 1.0])\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)\n",
    "\n",
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(columns), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
